package com.gengzp.mq.server.service;

import com.gengzp.mq.common.model.base.MqPaginationResult;
import com.gengzp.mq.common.model.req.AddGengzpMqTopicReq;
import com.gengzp.mq.common.model.req.EditGengzpMqTopicReq;
import com.gengzp.mq.common.model.req.PageGengzpMqTopicReq;
import com.gengzp.mq.common.model.resp.PageGengzpMqTopicResp;
import com.gengzp.mq.common.model.resp.SearchGengzpMqConsumerResp;

import java.util.List;

/**
 * @ClassName IGengzpMqTopicService
 * @Description 消息队列主题管理服务层接口
 * @Author gengzp
 * @Date 2025/7/10 10:13
 */
public interface IGengzpMqTopicService {

    /**
     * 新增主题
     *
     * @param req 新增主题请求实体
     */
    void addTopic(AddGengzpMqTopicReq req);

    /**
     * 编辑主题
     *
     * @param req 编辑主题请求实体
     */
    void editTopic(EditGengzpMqTopicReq req);

    /**
     * 根据id删除主题
     *
     * @param topicId 主题id
     */
    void deleteTopicById(Long topicId);

    /**
     * 分页查询主题信息
     *
     * @param req 分页查询请求参数实体
     * @return 主题信息列表
     */
    MqPaginationResult<PageGengzpMqTopicResp> pageQueryTopic(PageGengzpMqTopicReq req);

    /**
     * 查询所有主题名集合
     *
     * @return 主题名集合
     */
    List<String> searchTopicNames();

    /**
     * 根据主题名查询订阅的消费者信息
     *
     * @param topic 主题名
     * @return 订阅的消费者信息
     */
    SearchGengzpMqConsumerResp searchConsumer(String topic);

}
